package com.star.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.star.system.dto.MenuSaveDTO;
import com.star.system.dto.MenuUpdateDTO;
import com.star.system.entity.Menu;
import com.star.system.vo.MenuRoleTreeVO;
import com.star.system.vo.MenuTreeVO;
import com.star.system.vo.MenuUserTreeVO;

import java.util.List;

/**
 * 菜单 服务类
 *
 * @author yangzj
 */
public interface MenuService extends IService<Menu> {

    /**
     * 保存
     *
     * @param dto dto
     */
    void save(MenuSaveDTO dto);

    /**
     * 更新
     *
     * @param dto dto
     */
    void update(MenuUpdateDTO dto);

    /**
     * 删除由ids
     *
     * @param ids id
     */
    void deleteByIds(List<Long> ids);

    /**
     * 菜单管理树
     *
     * @return {@link List}<{@link MenuTreeVO}>
     */
    List<MenuTreeVO> tree();

    /**
     * 树 角色管理的新增菜单树
     *
     * @return {@link List}<{@link MenuRoleTreeVO}>
     */
    List<MenuRoleTreeVO> treeAll();

    /**
     * 树 角色管理的修改菜单树
     *
     * @param roleId 角色id
     * @return {@link List}<{@link MenuRoleTreeVO}>
     */
    List<MenuRoleTreeVO> treeRole(Long roleId);

    /**
     * 用户菜单树
     *
     * @param userId 用户id
     * @param admin  管理
     * @return {@link List}<{@link MenuUserTreeVO}>
     */
    List<MenuUserTreeVO> treeUser(Long userId, boolean admin);

}
